Qu'est-ce que syntax error near unexpected token `done' ?

"Syntax error near unexpected token `done'" est un message d'erreur courant dans les scripts shell sous Linux ou UNIX. Ce message d'erreur apparaît lorsque la syntaxe du script shell n'est pas correcte, généralement lors de l'utilisation incorrecte de la structure de contrôle "while" ou "for".

Ce message d'erreur peut également indiquer qu'il manque un mot clé, un caractère de ponctuation ou une parenthèse fermante dans le script shell.

Par exemple, voici un script shell incorrect qui génère cette erreur :

#!/bin/bash

counter=0

while [$counter -lt 10]
do
    echo $counter
    counter=$((counter+1))
done

Dans cet exemple, il manque des espaces autour de l'opérateur de comparaison "-lt" dans la condition de la boucle "while". Pour corriger cette erreur, il suffit d'ajouter des espaces :

#!/bin/bash

counter=0

while [ $counter -lt 10 ]
do
    echo $counter
    counter=$((counter+1))
done

Le message d'erreur "Syntax error near unexpected token `done'" est donc une indication qu'il y a une erreur de syntaxe dans le script shell, généralement à proximité du mot clé "done" qui marque la fin d'une boucle ou d'une instruction de contrôle. Il est important de vérifier attentivement la syntaxe du script et de s'assurer que toutes les ouvertures de parenthèses, les guillemets ou les caractères spéciaux sont correctement fermés ou échappés.